<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script>
  // 1. 使用 setTimeout
  // setTimeout(()=>{
  //   console.log('Hello World');
  // },1000);


  // 参数 函数
  // resolve reject 本身就是函数
  // new Promise((resolve,reject)=>{
  //   setTimeout(()=>{
  //     resolve();
  //   },1000);
  // }).then(()=>{
  //   // 第一次拿到结果的处理代码
  //   console.log('Hello World');
  //   console.log('Hello World');
  //   console.log('Hello World');
  //
  //   return new Promise((resolve,reject)=>{
  //     setTimeout(()=>{
  //       resolve();
  //     },1000);
  //   }).then(()=>{
  //     // 第二次拿到结果的处理代码
  //     console.log('Hello Vue');
  //     console.log('Hello Vue');
  //     console.log('Hello Vue');
  //
  //     return new Promise((resolve,reject)=>{
  //       setTimeout(()=>{
  //         resolve();
  //       },1000)
  //     }).then(()=>{
  //       // 第三次拿到结果的处理代码
  //       console.log('Hello JavaScript');
  //       console.log('Hello JavaScript');
  //       console.log('Hello JavaScript');
  //     });
  //   });
  // });

  // 什么情况下会用到Promise
  // 1. 一般情况下有异步操作时，使用Promise对这个有异步操作进行封装
  // new -> 构造函数（1， 保存状态信息 2，执行传入函数（回调函数））
  new Promise((resolve, reject)=>{
    // 假如这里进行是异步请求操作
    // setTimeout(()=>{
    //   resolve('Hello World');
    // },3000);

    // 失败的时候就调用reject
    reject('error message');
  }).then((data)=>{
    console.log(data);
  }).catch(err=>{
    console.log(err);
  });

</script>
</body>
</html>